原帖 | Jason | 2026-07-03 14:16 | 👍1 | 阅读约1
今天聊一个简单的知识点。
在嵌入式 Linux 设备中,uboot 启动第一阶段,有没有用到中断?
答案:没有。
其实在设备的启动流程中,中断不是全程生效的,uboot 只是完成硬件初始化,环境参数设置,代码搬运等动作,用不到中断。屏蔽中断是为了避免因为意外中断使得 boot 失败,毕竟很多外设还没有初始化,对应的中断处理函数也没有准备好。
其实所有的嵌入式 Linux/Android 设备,在启动流程的某个或者几个阶段,都是会屏蔽中断的,因为他认为我目前在做的事情不希望任何人来干扰,或者为了保证时序,必须禁用中断。
并且因为这个我还遇到一个查了好久的 BUG:项目中我们要在 Linux kernel 使用中断,发现有一组 PIN 脚在注册中断处理函数后,触发中断没有反应。怀疑过驱动写错,怀疑过硬件没有中断触发波形,又是飞线又是编驱动,发现没有任何作用。
最后查寄存器,发现这一组 PIN 的中断被 mask 了,原因是启动流程中,boot owner 手动 mask 了所有 PIN 的中断,但是打开中断的时候漏了一组 PIN 没打开,所以这组 PIN 的中断一直不能用。
所以这类问题就是最后查到底层寄存器,才看到原因。
相关笔记
- 📁 返回本主题 MOC
- 从MCU转Linux BSP开发
- Linux Android GT911触控调试
- 嵌入式Linux调试iic
- 老师,在Linux里面,如果我想实现一个旋钮功能,类似于那种洗衣机上的旋钮
- Linux 电容多点触摸驱动开
- Linux BSP问题闭环流程